跳到主要内容

Rust 方法

阐述

Rust 的方法是和 Rust 结构体或者 Rust 枚举关联的函数,结构体的定义和方法的定义是分离的。

在方法中,我们用 self 来代表对象本身,并且有几种不同的写法:

  • self 表示所有权转移到该方法中,这种形式用的较少
  • &self 表示该方法对对象的不可变借用
  • &mut self 表示可变借用

如果方法包含 self,就是绑定在对象上的,否则就是绑定在类型上的,后者可以用来定义构造函数。

实例

结构体

impl Rectangle {
fn width(&self) -> bool {
self.width > 0
}
}

fn main() {
let rect1 = Rectangle {
width: 30,
height: 50,
};

if rect1.width() {
println!("The rectangle has a nonzero width; it is {}", rect1.width);
}
}

枚举

##![allow(unused)]
enum Message {
Quit,
Move { x: i32, y: i32 },
Write(String),
ChangeColor(i32, i32, i32),
}

impl Message {
fn call(&self) {
// 在这里定义方法体
}
}

fn main() {
let m = Message::Write(String::from("hello"));
m.call();
}

性质

方法的调用具有自动引用和解引用的功能,也就是会为 object.something() 中添加 &, &mut, * 等等与方法的签名匹配。

相关内容

参考文献